/**
 * 
 */
package com.yuyi.chat.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.DestinationVariable;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.messaging.simp.annotation.SendToUser;
import org.springframework.stereotype.Controller;

import com.yuyi.chat.model.ClientMessage;
import com.yuyi.chat.model.ServerMessage;
import com.yuyi.chat.model.User;

/**
 * @author mcb
 *
 *         2018年8月29日 下午1:19:08
 */
@Controller
public class WebSocketAction {

	private Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@Autowired
    private SimpMessagingTemplate template;

	@MessageMapping("/sendTest")
	@SendTo("/topic/subscribeTest")
	public ServerMessage sendDemo(ClientMessage message) {
		logger.info("接收到了信息" + message.getName());
		
		return new ServerMessage(message.getName());
	}	
	
	/**
	 * 
	 * @param message
	 * 		一对一发送逻辑： 
	 * 			1，客户端：订阅时     '/user/' + $("#username").val() + '/demo3/greetings'（订阅是指的规定发送方）--将由谁发送，别人接收
	 * 			2，客户端：发送时   "/app/demo3/hello/" + $("#destUsername").val()  （发送是指的发送给谁）
	 * 			3，服务器：@MessageMapping("/demo3/hello/{destUsername}")  发送过来的消息，（1，发送给谁；2，保存到哪儿）    messagingTemplate.convertAndSendToUser(destUsername, "/demo3/greetings", greeting);
	 * 				@SendToUser("/demo3/greetings") 指定发送代理地方
	 * @return
	 */

	/**
	 * @param destUsername
	 * @param message
	 * @return
	 */
	@MessageMapping("/oneToOneTest/{destUsername}")
	@SendToUser("/subscribeTest") 
	public ServerMessage sendToUserTest(@DestinationVariable String destUsername,ClientMessage message) {
		logger.info("接收到了信息" + message.getName());
		
		
		System.out.println("后台一对一推送！");
		
		/*
		 * 对目标进行发送信息    destUsername:指定人的id可以接收  ；  /queue/subscribeTest：发送的地方；message：  发送的消息
		 */
		template.convertAndSendToUser(destUsername,"/subscribeTest", message.getName());

		return new ServerMessage(message.getName());
	}	

	
	
}
